from Clases.Signal import Signal

# el RR utiliza un FIFO o un PRIORITY, no puede utilizarun RR
class RR():
    
    def __init__(self,planificador):
        #planificador no puede ser otro RR,agregar alguna forma de verificacion
        if type(planificador) is RR: 
            raise Exception('Estas creado un RR con un RR y eso es invalido')
        self.planificador = planificador
        self.burstCounter = 3 #es la cantidad de instrucciones de CPU que deben ocurrir 

        
    def getProcess(self):
        return self.planificador.getProcess()
    
    def agregarElemetoQReady(self, pcb):
        self.planificador.agregarElemetoQReady(pcb)

    def getQReady(self):
        return self.planificador.getQReady()
    
    def getProgramaMenosUso(self):
        return self.planificador.getProgramaMenosUso()
    
    def instruccionEjecutada(self,kernel):
        print("el burst es de :", self.burstCounter)
        if self.burstCounter > 1:
            self.planificador.instruccionEjecutada(kernel)
            self.burstCounter-=1
        else:
            self.burstCounter = 3 
            #seteo burstCounter y rescheduleo
            kernel.interrupt(Signal.RESCHEDULE)
       